"""
1、元组的应用场景
    如果想要存储多个数据，但是这些数据是不能被修改的数据，该怎么做呢？
        答：列表也可以一次性存放多个数据，但是列表是支持修改的，所以只有使用元组来存放，元组内的数据是不支持修改的。
2、定义元组
    元组特点：
        定义元组使用小括号，且逗号隔开各个数据，数据可以是不同的数据类型；
        PS：如果定义的元组只有一个数据，那么这个数据后面也要添加逗号，否则数据类型就会为这个数据的数据类型
3、元组的常见操作
    由于元组是不支持修改的，所以就只剩一个查找了，查找的方法和列表的方法大致相同；
        1、根据下标查找
        2、index()：查找某个数据，如果数据存在返回对应的下标，否则报错；
        3、count()：统计数据
        4、len()：统计元组长度
"""
# 元组可以存放多个数据，且可以是不同类型的数据
tuple1 = (1, 2, "哈哈", [6, 6, 6], 2)  # 这里边有 int、str2、列表，以及重复的数据
print(tuple1)
print(type(tuple1))  # 查看这个数据的类型：tuple

# 当元组内只有一个数据的时候，则不属于元组类型的了；当然，除非在数据后方加上一个小逗号
tuple2 = (1)  # 这个是没有加逗号的单条数据
print(type(tuple2))  # 打印数据类型看一下，int，也就是数据原本的类型
tuple3 = "哈哈"
print(type(tuple3))  # 与上述一致，也都是数据原本的类型，这个是str
tuple4 = (1,)  # 这个是在数据后方加了逗号的
print(type(tuple4))  # 打印数据类型，为tuple，所以，如果只是一条数据的时候，别忘了在数据后方加一个逗号

# 尝试修改元组1内的数据（根据下标修改），但是元组内有列表，则这个列表内的数据是支持修改的
# tuple1[0] = "一"    # 其实他都已经高亮提示了，元组不支持项目赋值，
print(id(tuple1[3]))  # 先打印一下看一下元组内列表的数据id
tuple1[3][2] = "六"
print(tuple1)  # 将元组内 列表内的数据6改成六了。
print(id(tuple1[3]))  # 修改数据后，再次查看id，其实id是没有变动的，只是里边的数据发生了变化而已，就好像一杯水，你可以换点水，但是不能把杯子给换掉

# 根据下表查找数据
print(tuple1[3])  # 返回的是列表数据 [6,6,6]

# 根据数据返回下标
print(tuple1.index("哈哈"))  # 返回下标为 2
# print(tuple1.index("haha"))   # 找不到此数据，故报错
# count()：统计元组中某个数据出现的次数
print(tuple1.count(2))  # 上述数据中，元组内数据2 一共出现了2次

# len()：统计元组长度
print(len(tuple1))  # 上述数据中，元组内一共有5个数据

# 判断
print("哈哈" in tuple1)  # 返回True，“哈哈”是在tuple1元组内的
print("哈哈" not in tuple1)  # 返回False，“哈哈”明明在里边的。他说不在，肯定返回False啦



